package server
//
//import (
//	"errors"
//	"fmt"
//	"net"
//	"os"
//	kafka "socketTokafka/product"
//)
//
//type Server struct {
//	product   *kafka.Producer
//	listenUDP string
//	quit      chan os.Signal
//}
//
//// UDP/TCP packet received by the UDP/TCP server
//type packet struct {
//	addr    net.Addr
//	payload []byte
//}
//
//func NewServer() *Server {
//	//listenUDP := config.Config.GetString(dconfig.SettingListenUDP)
//	listenUDP := "127.0.0.1:7777"
//	c := &kafka.Config{
//		"test1_socket",
//		"10.65.66.181:9092",
//		2,
//		200,
//	}
//	p, err := kafka.NewProducer(c)
//	if err != nil {
//		fmt.Println(err)
//	}
//	quit := make(chan os.Signal)
//
//	return &Server{
//		product:   p,
//		listenUDP: listenUDP,
//		quit:      quit,
//	}
//}
//
//func (s *Server) setListenUDP(listen string) {
//	s.listenUDP = listen
//}
//
//func (s *Server) setListenTCP(listen string) {
//	s.listenUDP = listen
//}
//
//func (s *Server) SetClient(c *kafka.Producer) {
//	s.product = c
//}
//
//func (s *Server) Start() error {
//
//	listenUDP := s.listenUDP
//	var pc net.PacketConn
//	if listenUDP != "" {
//		fmt.Printf("Listening on udp:%v", listenUDP)
//		var err error
//		pc, err = net.ListenPacket("udp", listenUDP)
//		if err != nil {
//			fmt.Errorf("error message:%v", err)
//		}
//	}
//
//	if listenUDP == "" {
//		err := errors.New("neither listen_tcp nor listen_udp are set, exiting")
//		fmt.Errorf("error message:%v", err)
//	}
//	packets := make(chan packet)
//	if listenUDP != "" {
//		go func() {
//			for {
//				buf := make([]byte, 65536)
//				n, addr, err := pc.ReadFrom(buf)
//				if err != nil {
//					continue
//				}
//				packets <- packet{
//					addr:    addr,
//					payload: buf[:n],
//				}
//			}
//		}()
//	}
//
//	for {
//		select {
//		case pkt := <-packets:
//			go s.handle(pkt.addr, pkt.payload)
//			break
//		case <-s.quit:
//			if listenUDP != "" {
//				err := pc.Close()
//				if err != nil {
//					return err
//				}
//			}
//			return nil
//		}
//	}
//}
//func (s *Server) handle(addr net.Addr, packet []byte) {
//	//hepPacket, _ := decoder.DecodeHEP(packet)
//	//fmt.Printf(hepPacket.Payload)
//	//s.product.Log("", string(hepPacket.Payload))
//}
//
//// Stop stops the UDP/TCP server
//func (s *Server) Stop() {
//	close(s.quit)
//	err := s.product.Close()
//	if err != nil {
//		return
//	}
//}
